package com.tanhua.manage.job;

import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.mongo.UserFreeze;
import com.tanhua.dubbo.api.UserInfoApi;
import com.tanhua.dubbo.api.mongo.FreezeUserApi;
import com.tanhua.manage.service.UserService;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;

/**
 * 定时执行的任务类
 */
@Component
public class UnFreezeJob {

    @Autowired
    private UserService userService;

    @Reference
    private FreezeUserApi freezeUserApi;

    @Reference
    private UserInfoApi userInfoApi;
    /**
     * 定时执行的方法：
     * 1、每5秒执行一次
     * 2、任务调度表达式
     *    秒  分钟  小时   日   月   周(?)   年
     *    举例：  0/5  每5秒
     *    举例：  1-5  第2-6秒
     *    举例：  1,2  第2,3秒
     */
    @Scheduled(cron = "0 0 0/1 * * ?")
    public void deleteFreeUser(){
        List<UserFreeze> freezeUserList = userService.findFreezeUser();
        Date date = new Date();
        for (UserFreeze userFreeze : freezeUserList) {
            Long userId = Long.valueOf(userFreeze.getUserId());
            if (userFreeze.getUnfreezeDate().getTime()<date.getTime()){
                freezeUserApi.deleteByUserId(userFreeze.getUserId());
                UserInfo userInfo = userInfoApi.findById(userId);
                userInfoApi.unfreezeUser(userInfo);
            }
        }
    }
}
